package main

/*
标识符
标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列，但是第一个字符必须是字母或下划线而不能是数字。

以下是有效的标识符：

mahesh   kumar   abc   move_name   a_123
myname50   _temp   j   a23b9   retVal
以下是无效的标识符：

1ab（以数字开头）
case（Go 语言的关键字）
a+b（运算符是不允许的）

*/
import (
	"fmt"
	"math"
)

func init() {
	fmt.Println("init ")
	testtest()
}

//定义变量
var flag bool = true
var age int

func testtest() {
	age = 1
	fmt.Println("who" + " am " + "I")
	fmt.Printf("my age is %d ,this is %t\n", age, flag)
	var str string = "Ruboo"
	fmt.Println(len(str))

	var a, b int = 1, 2
	fmt.Println(a, b)
	fmt.Println(a + b)

	// 声明一个变量并初始化
	var x = "RUNOOB"
	fmt.Println(x)

	// 没有初始化就为零值
	var y int
	fmt.Println(y)

	// bool 零值为 false
	var c bool
	fmt.Println(c)

	println(retfunc()() + 1)

}

func xxxx() int {
	return 1
}

func retfunc() func() int {
	return xxxx
}

func main() {
	fmt.Println("basic test")

	var i int
	var f float64
	var b bool
	var s string
	fmt.Printf("%v %v %v %q\n", i, f, b, s)

	g, h := 123, "hhh"
	println(x, y, a, b, c, d, e, f, g, h)

	println(math.Sqrt(100))
}

var x, y int
var (
	a int
	b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"
